﻿
using RecruitmentAgency.Models.DataTypes;

namespace RecruitmentAgency.Models.DataProviders
{
    /// <summary>
    /// Provides database access for job provider data
    /// </summary>
    public interface IJobProviderDataProvider
    {
        /// <summary>
        /// Get a person Id number from a person username
        /// </summary>
        /// <param name="jobProviderId">The ID number of the JobProvider instance to delete</param>
        /// <returns>A person Id number</returns>
        JobProvider GetJobProvider(int jobProviderId);

        /// <summary>
        /// Gets a JobProvider instance from a person ID number
        /// </summary>
        /// <param name="personId">The ID number of the JobProvider instance to get</param>
        /// <returns>A JobProvider instance</</returns>
        JobProvider GetJobProviderByPersonId(int personId);

        /// <summary>
        /// Deletes the job provider associated with the jobProviderId parameter
        /// </summary>
        /// <param name="jobProviderId">The ID number of the JobProvider instance to delete</param>
        void DeleteJobProvider(int jobProviderId);

        /// <summary>
        /// Gets the job provider results and paging data
        /// </summary>
        /// <param name="pageSize">The number of rows of results to a page</param>
        /// <param name="pageNumber">The number of the page of results to return</param>
        /// <param name="firstName">The first name of the job provider to search for</param>
        /// <param name="lastName">The last name of the job provider to search for</param>
        /// <param name="companyName">The company name of the job provider to search for</param>
        /// <param name="registrationNumber">The company registration number of the job provider to search for</param>
        /// <param name="city">The city of the job provider to search for</param>
        /// <returns>A JobProviderSearchData instance that holds the job provider results and paging data</returns>
        JobProviderSearchData SearchJobProviders(int pageSize, int pageNumber, string firstName, string lastName, string companyName, string registrationNumber, string city);

        ///<summary>
        /// Update The Job provider details
        ///</summary>
        ///<param name="jobProvider">The JobProviderSearchData instance that holds the job provider details</param>
        void UpdateJobProvider(JobProvider jobProvider);
    }
}